// used in metal/mm/cpp
#ifndef zen_metal_shader_h
#define zen_metal_shader_h

#include <simd/simd.h>

typedef struct {
	matrix_float4x4 matrix;
	packed_float4 color;
} MTUBufIN_MC;

#define MTUBufIN_MC_M_OFF 0
#define MTUBufIN_MC_C_OFF (sizeof(float) * 16)
#define MTUBufIN_MC_SIZE (sizeof(float) * 20)

typedef struct {
	matrix_float4x4 matrix;
	packed_float4 color;
	packed_float2 size_ratio;
} MTUBufIN_MCS;

#define MTUBufIN_MCS_M_OFF 0
#define MTUBufIN_MCS_C_OFF (sizeof(float) * 16)
#define MTUBufIN_MCS_S_OFF (sizeof(float) * 20)
#define MTUBufIN_MCS_SIZE (sizeof(float) * 22)

typedef struct {
	packed_float2 coord;
	packed_float2 tex_coord;
} MTVBufIN_T;

typedef struct {
	packed_float2 coord;
	packed_float4 color;
} MTVBufIN_C;

typedef struct {
	packed_float2 coord;
	packed_float4 color;
	float point_size;
} MTVBufIN_P;


typedef struct {
	packed_float4 coord;
	packed_float2 tex_coord;
} MTVBufIN_T3d;

typedef struct {
	packed_float4 coord;
	packed_float4 color;
} MTVBufIN_C3d;

typedef struct {
	packed_float4 coord;
	packed_float4 color;
	float point_size;
} MTVBufIN_P3d;

#define MT_UBUF_INDEX 0
#define MT_VBUF_INDEX 1
#define MT_TEXT_INDEX 0

#endif /* zen_metal_shader_h */
